package destiny.预测;

import destiny.common.阴阳;
import destiny.五行.五行;
import destiny.干.天干;
import destiny.支.地支;

public class 支数 extends 数 {
	private 地支 地支;
	private 干数[] 藏干数;

	public 支数(地支 地支) {
		this(地支, Consts.四柱权重);
	}

	public 支数(地支 地支, int weight) {
		super(地支.术数());

		this.地支 = 地支;

		int size = 地支.支藏().length;
		藏干数 = new 干数[size];
		setWeight(weight);
	}

	public 地支 地支() {
		return 地支;
	}

	public 干数[] 藏干数() {
		return 藏干数;
	}

	@Override
	void setWeight(int weight) {
		int size = 地支.支藏().length;

		int idx = 0;
		for (天干 干 : 地支.支藏()) {
			藏干数[idx] = new 干数(干, (int) (weight * Consts.藏干权重[size - 1][idx]));
			++idx;
		}

//		// 支藏亦论生克
//		for (int i = 1; i < 藏干数.length; ++i) {
//			干数.生克(藏干数[0], 藏干数[i]);
//		}
	}

	public boolean 有根(五行 五行) {
		for (天干 干 : 地支.支藏()) {
			if (干.术数().五行().equals(五行))
				return true;
		}
		return false;
	}

	@Override
	public void 化(五行 ele) {
		化(ele, 藏干数[0].术数().阴阳());
	}

	@Override
	public void 化(五行 ele, 阴阳 yinYang) {
		藏干数[0].化(ele, yinYang);
	}

	@Override
	public String _DEBUG() {
		StringBuilder sb = new StringBuilder();
		sb.append(String.format("%s(%s)\t藏干", 地支, 地支.术数().五行()));
		for (干数 x : 藏干数)
			sb.append(String.format("\t: %s(%d)", x.术数().五行(), x.getWeight()));
		return sb.toString();
	}
}
